package br.ufal.ic.p3.darv10.dominio;

import java.util.ArrayList;
import java.util.List;

import br.ufal.ic.p3.darv10.banco.Banco;
import br.ufal.ic.p3.darv10.excecao.DARExcecao;

public abstract class Secretaria {

	private List<Curso> listaCursos;
	private List<Disciplina> listaDisciplinas;
	private String nomeSecretaria;
	private Departamento departamento;
	

	public Secretaria(){
		setListaCursos(new ArrayList<Curso>());
		setListaDisciplinas(new ArrayList<Disciplina>());
	}
	
	public Departamento getDepartamento() {
		return departamento;
	}

	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	public Secretaria(String nomeSecretaria){
		setNomeSecretaria(nomeSecretaria);
		setListaCursos(new ArrayList<Curso>());
		setListaDisciplinas(new ArrayList<Disciplina>());
	}
	
	public List<Curso> getListaCursos() {
		return listaCursos;
	}

	public void setListaCursos(List<Curso> listaCursos) {
		this.listaCursos = listaCursos;
	}

	public String getNomeSecretaria() {
		return nomeSecretaria;
	}

	public void setNomeSecretaria(String nomeSecretaria) {
		this.nomeSecretaria = nomeSecretaria;
	}
	
	public List<Aluno> getAlunosSecretaria(){
	
		List<Aluno> listaAlunosSecretaria = new ArrayList<Aluno>();
		
		for(Curso cur : listaCursos){
			listaAlunosSecretaria.addAll(cur.getAlunosCurso());
		}
		
		return listaAlunosSecretaria;
	}
	
	public void adicionarCurso(Curso c){
		listaCursos.add(c);
	}
	
	public void adicionarDisciplina(Disciplina dis){
		listaDisciplinas.add(dis);
	}
	
	public String toString(){
		return nomeSecretaria;
	}

	public static List<Secretaria> getSecretariasBD() throws DARExcecao {
		Banco bd = Banco.getInstance();
		return bd.getSecretarias();
	}

	public void setListaDisciplinas(List<Disciplina> listaDisciplinas) {
		this.listaDisciplinas = listaDisciplinas;
	}

	public List<Disciplina> getListaDisciplinas() {
		return listaDisciplinas;
	}
}
